Skip to content

[Split 1/3] Restructure modules: java/android → core/core-android under io.ably.pubsub - #1232

Draft
umair-ably wants to merge 1 commit into
integration/v2from
integration/split-1-core-modules
Draft

[Split 1/3] Restructure modules: java/android → core/core-android under io.ably.pubsub#1232
umair-ably wants to merge 1 commit into
integration/v2from
integration/split-1-core-modules

Conversation

@umair-ably

Copy link
Copy Markdown

First of a stack of PRs applying PDR-091b (PubSub device/server package split, major releases) to this repo, targeting the long-lived integration/v2 branch. Reference implementation: ably-js#2293.

What this PR does

  • javacore: publishes io.ably.pubsub:core (jar, JVM) — was io.ably:ably-java.
  • androidcore-android: publishes io.ably.pubsub:core-android (aar) — was io.ably:ably-android.
  • GROUP=io.ably.pubsub, VERSION_NAME=2.0.0: everything the repo publishes moves to the new group and major in lockstep (liveobjects, pubsub-adapter, network-client-* ride along, per the rollout plan).
  • Both core POMs declare themselves internal implementation artifacts for Ably's own device/server packages, not for direct use (per PDR-091b §1).
  • liveobjects, pubsub-adapter, uts, examples retarget project(":java"/":android")":core"/":core-android"; integration-test.yml, emulate.yml, javadoc.yml, CONTRIBUTING.md and uts/README.md follow.
  • Pure git mv for the module directories — history follows.

What this PR deliberately does not do

  • No door packages yet — io.ably.pubsub:device / io.ably.pubsub:server land in the next PR in the stack.
  • No repo rename, no publishing, no API renames (⚠️ PDR-091d is still in review).
  • The core keeps the ably-java/<version> base agent identifier (matching ably-js, whose core keeps ably-js/<version>); side-declaring agents are stamped by the door packages (next PR).
  • io.ably:ably-java / io.ably:ably-android 1.x are never published from this branch; fixes ship from a maintenance branch cut before the integration merge.

Notes for reviewers

  • The Java package namespace (io.ably.lib.*) is unchanged in the cores for now — the namespace decision (new pubsub root package vs. documented classpath-collision hazard) and the ⚠️091d Rest*Http* pass are deliberately sequenced later on the integration branch.
  • core-android/src/main/resources/META-INF/io/ably/ably-android/verification.properties still carries the verification token issued for io.ably:ably-android — a new token for the new artifact id needs requesting before GA (tracked in the rollout plan).
  • deploy/check-archives.sh was already stale (greps a build.gradle that no longer exists); untouched here.

Verified locally: checkWithCodenarc checkstyleMain checkstyleTest runUnitTests runLiveObjectsUnitTests :uts:runUtsUnitTests green; :core-android:compileReleaseJavaWithJavac green; publishToMavenLocal produces the expected io/ably/pubsub/{core,core-android,liveobjects,pubsub-adapter,network-client-*}/2.0.0 coordinates.

🤖 Generated with Claude Code

…e/core-android

Applies the first step of PDR-091b to this repo: the shared implementation
becomes the new internal core artifacts, published under the io.ably.pubsub
group at the new 2.0.0 major.

- The `java` module becomes `core`, publishing io.ably.pubsub:core (jar).
- The `android` module becomes `core-android`, publishing
  io.ably.pubsub:core-android (aar).
- GROUP moves to io.ably.pubsub and VERSION_NAME to 2.0.0 for everything
  this repo publishes (liveobjects, pubsub-adapter and network-client-*
  move group alongside, per the rollout plan).
- Both core POMs state explicitly that they are internal implementation
  artifacts for Ably's own device/server packages, not for direct use.
- liveobjects, pubsub-adapter, uts and examples retarget their project
  dependencies; CI workflows, CONTRIBUTING and the uts README follow the
  new task paths.

The io.ably:ably-java and io.ably:ably-android artifacts are never
published from this branch again; 1.x fixes ship from a maintenance
branch per PDR-091b.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@paddybyers

Copy link
Copy Markdown
Member

So is the idea here that, if I'm using java on a server say, I now need two artifacts: io.ably.pubsub:server and io.ably.pubsub:core ?

@umair-ably

Copy link
Copy Markdown
Author

So is the idea here that, if I'm using java on a server say, I now need two artifacts: io.ably.pubsub:server and io.ably.pubsub:core ?

afaict, you declare one dependency, io.ably.pubsub:server, and Maven/Gradle resolves io.ably.pubsub:core transitively

@paddybyers

Copy link
Copy Markdown
Member

So is the idea here that, if I'm using java on a server say, I now need two artifacts: io.ably.pubsub:server and io.ably.pubsub:core ?

afaict, you declare one dependency, io.ably.pubsub:server, and Maven/Gradle resolves io.ably.pubsub:core transitively

That's true, but why is it necessary? What's the problem with having a single server artifact that contains the server and core java packages?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants